/**
 * 版权所有（c）2014-2016阿里巴巴集团。版权所有。
 * 许可证标识符：Apache-2.0
 * 根据Apache许可证2.0版（以下简称“许可证”）获得许可；你可以
 * 除非遵守许可证，否则不得使用此文件。
 * 您可以通过以下网址获得许可证副本：
 * http://www.apache.org/licenses/LICENSE-2.0
 * 除非适用法律要求或书面同意，软件
 * 根据许可证分发的内容是按“原样”分发的，无需
 * 明示或暗示的任何种类的保证或条件。
 * 请参阅许可证，了解管理权限和权限的特定语言
 * 许可证下的限制。
 */

package com.huilian.iotbox.aliyun.client;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.support.PropertiesLoaderUtils;

import java.util.Properties;

@Slf4j
public class IotClient {
    private static String accessKeyID;
    private static String accessKeySecret;
    private static String regionId;
    private static String domain;
    private static String version;


    public static DefaultAcsClient getClient() {
        DefaultAcsClient client = null;

        Properties prop = new Properties();
        try {
            prop = PropertiesLoaderUtils.loadAllProperties("iot-config.properties");
            accessKeyID = prop.getProperty("user.accessKeyID");
            accessKeySecret = prop.getProperty("user.accessKeySecret");
            regionId = prop.getProperty("iot.regionId");
            domain = prop.getProperty("iot.domain");
            version = prop.getProperty("iot.version");

            IClientProfile profile = DefaultProfile.getProfile(regionId, accessKeyID, accessKeySecret);
            DefaultProfile.addEndpoint(regionId, regionId, prop.getProperty("iot.productCode"),
                    prop.getProperty("iot.domain"));
            // 初始化client
            client = new DefaultAcsClient(profile);

        } catch (Exception e) {
            e.printStackTrace();
            log.error("初始化client失败！exception:" + e.getMessage());
        }

        return client;
    }

    public static String getRegionId() {
        return regionId;
    }

    public static void setRegionId(String regionId) {
        IotClient.regionId = regionId;
    }

    public static String getDomain() {
        return domain;
    }

    public static void setDomain(String domain) {
        IotClient.domain = domain;
    }

    public static String getVersion() {
        return version;
    }

    public static void setVersion(String version) {
        IotClient.version = version;
    }
}
